package com.vca.service.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.vca.common.model.vca_product.VcaProduct;
import com.vca.common.request.PageParamRequest;
import com.vca.common.request.StoreProductSearchRequest;
import com.vca.common.request.VcaProductAddRequest;
import com.vca.common.response.*;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

/**
 * <p>
 * 商品表 服务类
 * </p>
 *
 * @author chenBing
 * @since 2022-11-16
 */
public interface VcaProductService extends IService<VcaProduct> {

    /**
     * @Description:出版物列表
     * @Author: chenBing
     * @Date: 2022/11/16
     */
    PageInfo<ShopsResponse> publicationListPage(PageParamRequest request);

    PageInfo<ShopsResponse> shopListPage(String language,PageParamRequest request, Integer type);

    /**
     * @Description:商品详情
     * @Author: chenBing
     * @Date: 2022/11/17
     */
    ShopResponse shopInfo(String language,Integer shopId);

    /**
    * @Description:商品列表
    * @Author: chenBing
    * @Date: 2022/11/17
    */
    ShopListResponse shopList(String language);


    /**
     * 获取产品列表Admin
     * @param request 筛选参数
     * @param pageParamRequest 分页参数
     * @return PageInfo
     */
    PageInfo<VcaProductResponse> getAdminList(StoreProductSearchRequest request, PageParamRequest pageParamRequest);

    /**
    * @Description:获取购物车商品信息
    * @Author: chenBing
    * @Date: 2022/11/21
    */
    VcaProduct getCartByProId(Integer productId);

    /**
     * 修改商品排序
     * @param productId
     * @param sort
     * @author Li
     * @date 2022/11/23 10:05
     * @return
     */
    boolean updateSort(Integer productId, Integer sort);



    /**
     * 新增商品
     * @param request 商品请求对象
     * @return Boolean
     */
    Boolean addProduct(VcaProductAddRequest request);

    /**
     * 获得商品头部数据
     * @author Li
     * @date 2022/11/23 09:16
     * @return
     */
    List<AdminHeaderResponse> getHeader();

    /**
     * 根据商品id获取商品信息
     * @param productId
     * @author Li
     * @date 2022/11/24 09:54
     * @return
     */
    ProductAdminResponse getProductAdmin(Integer productId);

    /**
     * 上架
     */
    boolean putOnShelf(Integer id);

    /**
     * 下架
     */
    boolean offShelf(Integer id);

    /**
     * 商品修改
     * @param request 商品参数
     */
    boolean updatePrdouct(VcaProductAddRequest request);

    /**
     * 删除商品
     * @param id Integer
     */
    boolean deleteProduct(Integer id);

    List<VcaProduct> getProductsAndDelete(List<Integer> ids);
}
